package simpleGa;

import java.util.List;
import java.util.Random;

/**
 *
 * @author Wichrowski
 */
public class Osobnik {

    private int[] genotyp = new int[Graf.liczbaWierzcholkow];
    private int id;

    public Osobnik(int id, boolean generujGenotyp) {
        this.id = id;
        if (generujGenotyp) {
            for (int i = 0; i < Graf.liczbaWierzcholkow; i++) {
                genotyp[i] = losujLiczbe01();
            }
        }
    }

    public int losujLiczbe01() {
        Random randomGenerator = new Random();
        return randomGenerator.nextInt(2);
    }

    public boolean isPokrycieGrafu() {
        List<Wiercholek> listaWierzcholkow = GA.mainGraf.getListaWierzcholkow();
        petla1:
        for (int i = 0; i < Graf.liczbaWierzcholkow; i++) {
            if (genotyp[i] == 1) {
                continue;
            } else {
                Wiercholek get = listaWierzcholkow.get(i);
                for (int k = 0; k < get.getSasiedzi().size(); k++) {
                    Wiercholek get1 = get.getSasiedzi().get(k);
                    if (genotyp[get1.getId()] == 1) {
                        continue petla1;
                    }
                }
                return false;
            }
        }
        return true;
    }

    public int getOcena() {
        int k = 0;
        for (int i = 0; i < Graf.liczbaWierzcholkow; i++) {
            if (genotyp[i] == 1) {
                k++;
            }
        }
        return k;
    }

    public int getId() {
        return id;
    }

    public int[] getGenotyp() {
        return genotyp;
    }

    public void setGenotyp(int[] genotyp) {
        this.genotyp = genotyp;
    }

}
